package com.txf.simple.app;

import android.app.Application;
import android.content.Context;

import com.karumi.dexter.Dexter;
import com.txf.simple.tools.EquipmentTools;
import com.txf.simple.tools.StoreToadTools;
import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.URLConnectionNetworkExecutor;
import com.yolanda.nohttp.cache.DBCacheStore;
import com.yolanda.nohttp.cookie.DBCookieStore;

/**
 * @author txf
 * @Title
 * @package com.txf.simple.app
 * @date 2016/11/21 0021
 */

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        init();
        initThirdParty();
    }

    /**
     * 自写类的初始化
     */
    private void init() {
        applicationContext = this;
        //初始化设备信息 包含(屏幕宽高  密度 缩放密度 等)
        EquipmentTools.getInstance().init(this);
        //初始化App信息  包含(储存路劲  app当前版本号等)
        StoreToadTools.getInstance().init(this);
    }

    /**
     * 初始化第三方引入包
     */
    private void initThirdParty() {
        //权限检查
        Dexter.initialize(this);
        // NoHttp默认初始化。
        initHttp();
        //初始化友盟推送
        initUMPush();

    }
    private void initUMPush() {
//        PushAgent mPushAgent = PushAgent.getInstance(this);
//        //注册推送服务，每次调用register方法都会回调该接口
//        mPushAgent.register(new IUmengRegisterCallback() {
//
//            @Override
//            public void onSuccess(String deviceToken) {
//                //注册成功会返回device token
//                Logger.i("注册推送成功"+deviceToken);
//            }
//            @Override
//            public void onFailure(String s, String s1) {
//                Logger.i("注册推送失败"+" , s == "+s+" , s1 == "+s1);
//            }
//        });
    }
    private void initHttp() {
        NoHttp.initialize(this, new NoHttp.Config()
                // 设置全局连接超时时间，单位毫秒
                .setConnectTimeout(30 * 1000)
                // 设置全局服务器响应超时时间，单位毫秒
                .setReadTimeout(30 * 1000)
                // 保存到数据库
                .setCacheStore(
                        new DBCacheStore(this).setEnable(true) // 如果不使用缓存，设置false禁用。
                )
                // 默认保存数据库DBCookieStore，开发者可以自己实现。
                .setCookieStore(
                        new DBCookieStore(this).setEnable(false) // 如果不维护cookie，设置false禁用。
                )
                .setNetworkExecutor(new URLConnectionNetworkExecutor()) // 使用HttpURLConnection做网络层。
        );
    }
    private static Context applicationContext;
    public static Context getContextInstance() {
        return applicationContext;
    }
}
